Determining an improved technology environment for a software application

ABSTRACT

A system is configured to obtain information relating to a current application environment and a plurality of model application environments of a software application. The system runs the software application using the current application environment and each of the model application environments. The system collects a plurality of performance metrics related to performance of the software application in the current application environment and each of the model application environments while running in the simulated environment. The system assigns a score to each performance metric and determines a model application environment that yielded a higher score for a performance metric as compared to the score of the performance metric in the current application environment. The system recommends at least one technology product used for a corresponding technology component associated with the performance metric in the determined model application environment.

TECHNICAL FIELD

The present disclosure relates generally to managing performance ofsoftware implemented systems, and more specifically to determining animproved technology environment for a software application.

BACKGROUND

A number of technology products are presently available to implement andrun a software application. Currently an application environment for asoftware application is designed based on one or more desiredperformance criteria for the application. The application environment isbuilt using a set of technology products that satisfy the performancecriteria of the application. The application is expected to behave in adesired manner when deployed in the application environment using theset technology products. However, a technology product may not performin a desired manner when deployed in the application environment inrelation to one or more performance parameters including applicationperformance, deployment strategy, availability issues and otherapplication performance parameters. Thus, there is no way of knowingwhether the application will behave in a desired manner when actuallydeployed in the application environment. For example, an application maybe designed for use with a particular type of server expecting 50 to 100users at any one time. However, when the application is actuallydeployed, the volume of user traffic may go beyond the expected trafficwhich the particular server may be incapable of handling. In this case,the application environment may need to be redesigned to suit thechanged application requirements. Further, the technology landscape iscontinuously changing with new and emerging technology products beingadded regularly and enhancements being added to the current set oftechnology products.

SUMMARY

The system and method implemented by the system as disclosed in thepresent disclosure provide technical solutions to the technical problemsdiscussed above by recommending one or more application environmentsand/or specific technology products suitable to run a softwareapplication. The disclosed system and methods provide several practicalapplications and technical advantages. For example, the disclosed systemprovides the practical application of recommending an applicationenvironment and/or a technology product that is better suited to thesoftware application as compared to a current application environment ofthe software application. As disclosed in accordance with embodiments ofthe present disclosure, an application manager tests differentcombinations of technology products for the technology componentsrequired to run the software application and recommends an alternativecombination of technology products for the technology components that isdifferent from the combination of technology products currently used inthe current application environment and can yield better performance ofthe software application corresponding to one or more performancemetrics. As disclosed in the following disclosure, the applicationmanager obtains information relating to the technology components of thecurrent application environment and specific technology products usedfor those technology components in the current application environment.The application manager may additionally obtain information relating toone or more performance requirements of the software applicationincluding load performance and processing performance required for thesoftware application. Based on the obtained information, applicationmanager builds a plurality of alternative model application environmentsthat can potentially be used for the software application such that eachmodel application environment includes a different combination oftechnology products for the technology components needed to run thesoftware application. Application manager runs the software applicationin each of the model application environments in a simulated environmentand collects data relating to a plurality of performance metrics relatedto performance of the software application in each of the modelapplication environments. Application manager analyzes the performancemetrics collected for each model application environment (including thecurrent application environment) and generates a recommendation reportbased on the analysis. The recommendation report may include arecommendation to use one or more model application environments for thesoftware application that are found to perform better than the currentapplication environment based on the analysis of the performancemetrics. Additionally or alternatively, the recommendation report mayinclude recommendations to use individual technology products for one ormore technology components that satisfy one or more performancerequirements of the software application.

The disclosed system and methods provide an additional practicalapplication of adjusting the current application environment of thesoftware application from time to time to accommodate changingperformance requirements of the software application. As described inaccordance with certain embodiments of the present disclosure, theapplication manager may collect information relating to one or moreperformance requirements of the software application according to apre-determined schedule (e.g., periodically). Based on the collectedinformation, application manager may determine whether one or moreperformance requirements of the software application has changed overtime and builds a customized application environment for the softwareapplication based on the current performance requirements of thesoftware application. This may ensure that the current applicationenvironment of the software application evolves to accommodate thechanging performance requirements of the software application.

The disclosed system and methods provide an additional practicalapplication of evolving the current application environment of thesoftware application to accommodate new and emerging technologies. Forexample, when a new technology product is added for a technologycomponent being using in the current technology environment, theapplication manager may be configured to assess whether the newly addedtechnology product can be used in an application environment for thesoftware application. For example, when the newly added technologyproduct corresponds to a technology component being used by the currenttechnology environment of the software application, application managermay determine that the newly added technology product may be used in theapplication environment of the software application. Additionally oralternatively, application manager may determine whether the newly addedtechnology product improves performance of the software applicationcorresponding to at least one performance metric (e.g., loadperformance, processing performance etc.). Application manager may beconfigured to build a new model application environment by selecting thenewly added technology product for the respective technology componentin response to determining that the newly added technology product canbe used in the application environment of the software applicationand/or that the newly added technology product improves performance ofthe software application corresponding to at least one performancemetric.

The disclosed system and methods provide an additional practicalapplication of improving performance (e.g., processing performance) of acomputing system running the software application by recommending usageof a technology environment and/or technology product that improves theperformance of the computing system while running the softwareapplication. As disclosed in accordance with certain embodiments of thepresent disclosure, application manager may maintain informationrelating to performance benchmarks for each technology product underdistinct performance conditions such as user traffic and amount of databeing handled by the software application. A performance benchmarkrelating to a technology product includes a level of performanceprovided by the technology product corresponding to at least oneperformance metric. A performance metric, as discussed below, may relateto a load performance and/or processing speed performance of thetechnology product. For example, a technology product may be associatedwith high load performance meaning the technology product can handle alarge amount of user traffic and/or large amount of data. Anothertechnology product may be associated with high server performance whichmay mean that the technology product provides fast server responsetimes. Application manager may build custom application environments forthe software application by selecting one or more technology productsbased on their corresponding performance benchmarks, to improveprocessing performance of the computing system running the softwareapplication. For example, application manager may include a technologyproduct in the application environment that improves the response timeof the computing system. running the software. Similarly, applicationmanager may include a technology product in the application environmentthat can handle a higher load (e.g., user traffic, data load etc.) toavoid the application server from freezing and/or crashing, thusimproving the performance of the application server.

BRIEF DESCRIPTION OF THE DRAWINGS

For a more complete understanding of this disclosure, reference is nowmade to the following brief description, taken in connection with theaccompanying drawings and detailed description, wherein like referencenumerals represent like parts.

FIG. 1 is a schematic diagram of an example data processing system, inaccordance with certain embodiments of the present disclosure;

FIG. 2 is a flowchart of an example method for processing an applicationenvironment for a software application, in accordance with certainembodiments of the present disclosure;

FIG. 3 is a flowchart of an example method for building applicationenvironments for a software application, in accordance with certainembodiments of the present disclosure;

FIG. 4 is a flowchart of an example method for improving an applicationenvironment for a software application, in accordance with certainembodiments of the present disclosure;

FIG. 5 is a flowchart of an example method for analyzing performancemetrics collected for model application environments of a softwareapplication, in accordance with certain embodiments of the presentdisclosure; and

FIG. 6 illustrates an example schematic diagram of the applicationmanager illustrated in FIG. 1 , in accordance with one or moreembodiments of the present disclosure.

DETAILED DESCRIPTION System Overview

FIG. 1 is a schematic diagram of an example data processing system 100,in accordance with certain embodiments of the present disclosure.

As shown in FIG. 1 , data processing system 100 includes a currentapplication system 110 and an application manager 130, each connected toa network 170. The network 170, in general, may be a wide area network(WAN), a personal area network (PAN), a cellular network, or any othertechnology that allows devices to communicate electronically with otherdevices. In one or more embodiments, the network 170 may be theInternet.

The current application system 110 may run a software application 112 ina current application environment 120. The current applicationenvironment 120 may use technology components (shown as 122 a-122 n),wherein each technology component 122 a-122 n uses a respectivetechnology product (shown as 124 a-124 n). In one example use case,current application system 110 may be representative of a productionserver of an organization that runs the software application 112 in thecurrent application environment 120. The production server may beconfigured to be accessed by several users desiring to use thefunctionality implemented by the software application 112. Eachtechnology component 122 a-122 n may refer to a type of hardware orsoftware tool used to implement, run and/or support the softwareapplication 112. For example, a technology component may include, but isnot limited to, a middleware component, an operating system component, adatabase engine component, an implementation technology component (e.g.,coding language used to implement the software application 112), a cloudprovider component, a network technology component (e.g., WAN, LAN, VPNetc.), a virtualization technique component and a server less computingtechnology component. A technology product 124 a-124 n may refer to aspecific hardware or software tool/technology used for a correspondingtechnology component. For example, Apache Tomcat® can be a technologyproduct used as a middleware component. Thus, the term “technologycomponent” may generally refer to a type of technology product, and theterm “technology product” may refer to a specific hardware or softwaretool used for a respective technology component. In one example case,current application environment 120 may include three technologycomponents 122 a, 122 b and 122 c using respective technology products124 a, 124 b and 124 c. Technology component 122 a may be a middlewarecomponent that uses Apache Tomcat server as the specific technologyproduct 124 a. Technology component 122 b may be a database enginecomponent that uses SQL server as the specific technology product 124 b.Technology component 122 c may be a virtualization technique componentthat uses VMware virtual machine as the specific technology product 124c.

Several alternative technology products 124 are typically availablecorresponding to each technology component 122 a-122 n. For example,technology product alternatives for the operating system (OS) componentmay include, but are not limited to, Windows OS, Linux OS, Redhat OS andFedora OS. Technology product alternatives for the implementationtechnology component may include, but are not limited to, C++, Java, C#,Python and JavaScript. Technology product alternatives for themiddleware technology component may include, but are not limited to,Apache Tomcat server, JBoss server and Oracle server. Technology productalternatives for the cloud component may include, but are not limitedto, Microsoft Azure, Amazon webservices and Google cloud platform.Technology product alternatives for the network component may include,but are not limited to, Local Area Network (LAN), Wireless (WLAN), WideArea Network (WAN) and Virtual Private Network (VPN). Technology productalternatives for the virtualization technique component may include, butare not limited to, VMware, Microsoft Hyper-V, Openstack and Xen.

As described above, the technology products 124 a-124 n used for therespective technology components 122 a-122 n in the current applicationenvironment 120 may not be the most optimal for the software application112. That is, the current application environment 120 may not alwaysyield the performance desired for the software application 112.

Application manager 130 is configured to test different combinations oftechnology products 124 for the technology components 122 a-122 nrequired to run the software application 112 and recommend analternative combination of technology products 124 for the technologycomponents 122 a-122 n that is different from the combination oftechnology products 124 a-124 n currently used in the currentapplication environment 120 and can yield better performance of thesoftware application 112 corresponding to one or more performancemetrics.

Application manager 130 may be configured to store information relatingto a plurality of alternative technology products 124 that can be usedfor each of a plurality of technology components 122. Applicationmanager 130 may be configured to build a plurality of model applicationenvironments 136 such that each of the model application environments136 includes a different combination of the technology products 124 usedfor the technology components 122. Application manager 130 may beconfigured to obtain information relating to the current applicationenvironment 120 being used for the software application 112. In oneembodiment, application manager 130 may use an application connector toobtain the information relating to the current application environment120. The application connector may be a software agent designed to runon the current application system 110 and extract information relatingto the current application environment 120 from the current applicationsystem 110. The information extracted by the application connector mayinclude information relating to the particular technology components 122a-122 n of the current application environment 120 and the specifictechnology products 124 a-124 n being used for each technology component122 a-122 n. In one embodiment, the information extracted by theapplication connecter may include information relating to one or moreperformance requirements of the software application with regard to oneor more performance metrics including load performance and processingperformance. As described below, the information relating to theperformance requirements of the software application may be used byapplication manager 130 to recommend one or more model applicationenvironments 136 and/or technology products that suit the performancerequirements.

Based on the information obtained from the current application system110, application manager 130 may be configured to build a plurality ofalternative model application environments 136 that can potentially beused for the software application 112. For example, based on theinformation obtained from the current application system 110,application manager 130 may determine the technology components 122a-122 n that need to be incorporated into an application environmentmeant for the software application 112. Once, the technology components122 a-122 n are identified, application manager 130 may identify theplurality of alternative technology products 124 available for each ofthe technology components 122 a-122 n. The alternative technologyproducts 124 identified for each technology component 122 a-122 n mayinclude the current technology product 124 a-124 n being used in thecurrent application environment 120 for the technology components 122a-122 n. Application manager 130 may be configured to build a pluralityof model application environments 136 for the software application 112by selecting for each model application environment 136 a differentcombination of the technology products 124 for the technology components122 a-122 n. That is, each model application environment 136 is built touse a combination of technology products 124 that is different from thecombinations of technology products 124 used for other model applicationenvironments 136 built for the software application 112. In oneembodiment, application manager 130 also builds a copy of the currentapplication environment 120 for comparing with other model applicationenvironments 136.

For example, when the technology components 122 a-122 n of the currentapplication environment 120 includes a middleware component, a databaseengine component and a virtualization technique component, applicationmanager 130 may identify alternative technology products for each of amiddleware component, a database engine component and a virtualizationtechnique component. Application manager 130 may build a plurality ofpotential model application environments 136 for the softwareapplication 112 by using different combinations of technology products124 for the middleware component, database engine component andvirtualization technique component. For example, application manager 130may build each model application environment by selecting a differentalternative technology product 124 for at least one of the technologycomponents 122 a-122 n.

Application manager 130 may be configured to automatically configureeach of the model application environments 136 to suit the softwareapplication 112. The application manager 130 may be configured to obtaininformation relating to how the software application 112 is configuredwith respect to one or more parameters (e.g., logging-in, loadbalancing, database details etc.) in the current application environment120. Application manager 130 may configure each of the model applicationenvironments 136 for the software application 112, based on theconfigurations in the current application environment 120, for example,to match the configurations in the current application environment 120.Application manager 130 may also configure one or more parameters of amodel application environment by modifying the configuration of theparameters in the current application environment 120 to suit the modelapplication environment 136.

Application manager 130 may maintain information relating to performancebenchmarks 142 for each technology product 124 under distinctperformance conditions such as user traffic and amount of data beinghandled. A performance benchmark 142 relating to a technology product124 includes a level of performance provided by the technology product124 corresponding to at least one performance metric 138. A performancemetric 138, as discussed below, may relate to a load performance and/orprocessing speed performance of the technology product 124. For example,a technology product 124 may be associated with high load performancemeaning the technology product 124 can handle a large amount of usertraffic and/or large amount of data. Another technology product 124 maybe associated with high server performance which may mean that thetechnology product 124 provides fast server response times. Theperformance benchmarks 142 of the technology products 124 may allow theapplication manager 130 to build custom model application environmentsby selecting one or more technology products 124 that satisfy specificperformance requirements of the software application 112. For example,application manager 130 may be configured to obtain information relatingto at least one performance requirement of the software application 112corresponding to a technology component 122. Application manager 130 maybe configured to determine a technology product 124 available for thetechnology component 122 and that satisfies the performance requirement,based on the performance benchmark 142 stored for the technology product124. Application manager 130 may be configured to build a modelapplication environment 136 for the software application 112 byselecting the technology product 124 for the technology component 122.

Application manager 130 may be configured to evolve to accommodate newand emerging technologies. For example, when a new technology product124 is added for a technology component 122, application manager 130 maybe configured to assess whether the newly added technology product 124can be used in an application environment for the software application112. For example, when the newly added technology product 124corresponds to a technology component 122 a-122 n being used by thecurrent technology environment 120 of the software application 112,application manager 130 may determine that the newly added technologyproduct 124 may be used in the application environment of the softwareapplication 112. Additionally or alternatively, application manager 130may be configured to determine whether the newly added technologyproduct 124 satisfies one or more performance requirements of thesoftware application 112. Application manager 130 may be configured tobuild a new model application environment 136 by selecting the newlyadded technology product 124 for the respective technology component122. Application manager 130 may build the new model applicationenvironment 136 in response to determining that the newly addedtechnology product 124 can be used in the application environment of thesoftware application 112 and/or that the newly added technology product124 satisfies at least one requirements of the software application 112.In one embodiment, application manager 130 may be configured to collectinformation relating to one or more performance requirements of thesoftware application 112 according to a pre-determined schedule (e.g.,periodically). Application manager 130 may be configured to detectwhether the performance requirements of the software application 112 haschanged and build a customized application environment for the softwareapplication 112 based on current performance requirements of thesoftware application 112. This may ensure that the current applicationenvironment 120 of the software application 112 evolves to accommodatethe changing performance requirements of the software application 112.

Application manager 130 may be configured to run the softwareapplication 112 in each of the model application environments 136 in asimulated environment. One of the model application environments 136 maybe a copy of the current application environment 120. Applicationmanager 130 may include a simulator logic that can be configured to hostand deploy each of the model application environments 136 (including thecurrent application environment 120) and run the software application112 in each of the model application environments 136. Applicationmanager 130 may be configured to collect data relating to a plurality ofperformance metrics 138 related to performance of the softwareapplication in each of the model application environments 136 whilerunning in the simulated environment. The plurality of performancemetrics 138 may include, but are not limited to, one or more ofapplication server performance, performance related to type of datahandled by the software application, database performance, data securityanalysis, input and output analysis and deployment on cloud platforms.Application server performance may relate to response time of theapplication server at different levels of load (e.g., user traffic,amount of data etc.). Performance data related to the type of datahandled by the software application 112 may include information relatingto whether the software application 112 handles sensitive data needing ahigher level of security and whether a model application environment 136can handle sensitive data. This performance metric may allow theapplication manager 130 to recommend secure technology products 124 thatcan securely handle sensitive user data, such as private cloud productor a virtual machine where the virtualization is done at the hardwarelevel to provide maximum security. Database performance may relate todatabase response times. Data relating to data security analysis mayinclude security vulnerabilities (e.g., relating to data security) ofthe software application 112 in particular model applicationenvironments 136. Application manager 130 scans the software application112 for known vulnerabilities in each model application environment 136and for potential threats to the application 112. Application manager130 may determine based on this performance metric whether a particularmodel application environment 136 is vulnerable to attacks. Data relatedto deployment on cloud platforms may include information relating towhether the software application 112 can be deployed on cloud platforms.For example, application manager 130 may be configured to analyzewhether the software application 112 is suitable for deploying on acloud platform based on running the software application 112 in modelapplication environments 136 including cloud deployments. Thisperformance metric may help the application manager 130 determinewhether the software application 112 can be deployed on cloud platformsor is more suitable for a private in-house server or virtual machinedeployment.

To measure the performance of the software application 112 in each modelapplication environment 136, application manager 130 may be configuredto run one or more tests on each model application environment 136 whilethe simulator logic is running the software application 112 in the modelapplication environment 136. Application manager 130 may collect one ormore of the performance metrics 138 described above corresponding toeach model application environment 136 as a result of conducting the oneor more tests. The tests may include load testing to test the softwareapplication 112 at different amounts of load (e.g., user traffic, amountof data etc.). For example, load testing may include simulatingsimultaneous logins of different numbers of users using differentamounts of test data. Additionally or alternatively, the tests mayinclude performance testing to test the overall performance of a modelapplication environment 136 and collect data on performance metrics 138including availability, response time and stability of the softwareapplication 112. In one example, for each model application environment136, application manager 130 carries out the testing in multiple cycleswith different amounts of load. For example, each model applicationenvironment 136 is tested initially with 10 k simultaneous user loginsand 100 GB of test data. This test cycle is then repeated three timeswith a replication load factor of 2×. This means with each test cycle,the load applied is two times that applied in the previous test cycle.In one embodiment, the load size may be customized based on therequirements of the software application 112. In an additionalembodiment, application manager 130 tests each model applicationenvironment 136 for security vulnerabilities (e.g., data security) andcollects data relating to how vulnerable the model applicationenvironment 136 is to potential security threats.

Application manager 130 may be configured to analyze the performancemetrics 138 collected for each model application environment 136(including the current application environment 120) and generate arecommendation report 140 based on the analysis. The recommendationreport 140 may include a recommendation to use one or more modelapplication environments 136 for the software application 112 that arefound to perform better than the current application environment 120based on the analysis of the performance metrics 138. Additionally oralternatively, the recommendation report 140 may include recommendationsto use individual technology products 124 for one or more technologycomponents 122 that satisfy one or more performance requirements of thesoftware application 112.

In order to analyze the performance metrics 138, application manager 130may be configured to segregate the performance metrics 138 collected foreach model application environment 136 including the current applicationenvironment 120. The segregating may include grouping together datacollected for each performance metric 138 for all the model applicationenvironments 136. For example, data relating to application serverperformance metric collected for all model application environments 136may be grouped together. Similarly, data relating to databaseperformance metric collected for all model application environments 136may be grouped together. Application manager 130 may compare the modelapplication environments 136 based on each performance metric 138collected for the respective model application environments 136. Forexample, the application server performance metric of all modelapplication environments 136 may be compared separately. Similarly, thedatabase performance metric of all model application environments 136may be compared separately. Application manager 130 may recommend one ormore model application environments 136 and/or individual technologyproducts 124 based on results of the comparison. In one or moreembodiments, for each model application environment 136 (including thecurrent application environment 120), application manager 130 assigns aperformance score to each performance metric 138 collected for the modelapplication environment 136. Application manager 130 may be configuredto assign a higher score for a higher level of performance related to aperformance metric 138. For example, if a first model applicationenvironment 136 is found to be able to handle 500 simultaneous userlogins at one time and a second model application environment 136 isfound to be able to handle 10 k simultaneous user logins at one time,the application performance metric for the second model applicationenvironment 136 is assigned a higher performance score than theapplication performance metric for the first model applicationenvironment 136. Application manager 130 may be configured to comparethe respective scores of each performance metric 138 collected forseveral model application environments 136. Application manager 130 maybe configured to recommend a model application environment 136 that isfound to have a higher score with regard to one or more performancemetrics 138 as compared to the respective scores of the one or moreperformance metrics 138 collected for other model applicationenvironments 136. Following the above example, application manager 130may recommend the second model application environment 136 for thesoftware application 112 over the first model application environment136 based on the higher score associated with the application serverperformance metric collected for the second model applicationenvironment 136.

In one or more embodiments, application manager 130 may be configured tocompare the total performance scores of multiple performance metrics 138collected for each model application environment 136 and recommend amodel application environment 136 that has the highest total performancescore for the performance metrics 138. For example, application manager130 may compare the total performance scores of all performance metrics138 collected for each model application environment 136 and recommend amodel application environment 136 that has the highest total performancescore of for the performance metrics 138.

In one or more embodiments, application manager 130 may be configured tosort the performance metrics 138 collected for each model applicationenvironment 136 (including the current application environment 120)based on one or more requirements of the software application 112, forexample, by placing a higher priority on performance metrics 138 thatare associated with the one or more requirements of the softwareapplication 112. Application manager 130 may be configured to recommendone or more model application environments 136 and or individualtechnology products 124 that have higher scores recorded for theprioritized performance metrics 138 associated with the one or morerequirements of the software application 112, regardless of scoresrecorded for other performance metrics 138. For example, the softwareapplication 112 may require high database performance (e.g., quickresponse times) and high data security as a result of handling sensitiveuser data. Accordingly, application manager 130 may prioritize thedatabase performance metric and the security performance metric overother performance metrics 138 collected for the model applicationenvironments 136. In this case, application manager 130 recommends oneor more model application environments 136 that were found to have thehighest scores for the database performance metric and the securityperformance metric. Application manager 130 may be configured to obtainthe one or more requirements of the software application 112 in responseto receiving a request for the one or more requirements or byautomatically determining the one or more requirements by analyzing oneor more performance metrics 138 of the software application 112. Forexample, based on analyzing the software application 112 while runningusing one or more model application environments 136, applicationmanager may determine that the software application is vulnerable tocyber attacks. This detection may prompt the application manager 130 toprioritize the data security metric for recommending model applicationenvironments 136 that were found to have the highest scores related tothe data security metric.

In one embodiment, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of a prioritized performance metric138 (e.g., database performance, application server performance etc.).If application manager 130 determines that a model applicationenvironment 136 has a higher score for the performance metric 138 ascompared to the respective score of the performance metric 138 collectedfor the current application environment 120, application manager 130 maybe configured to determine at least one technology product 124 used fora corresponding technology component 122 associated with the performancemetric 138 in the determined model application environment 136 that isdifferent from the current technology product 124 used for thetechnology component 122 in the current application environment 120.Application manager 130 may be configured to recommend using thedetermined at least one technology product 124 for the technologycomponent 122 to achieve a higher level of performance related to theprioritized performance metric 138.

In an additional or alternative embodiment, application manager 130 maybe configured to receive a request for a higher level of performancerelated to a performance metric 138 associated with at least onetechnology component 122 as compared to a current level of performancerelated to the performance metric 138 in the current applicationenvironment 120. In response, application manager 130 may be configuredto compare one or more model application environments 136 with thecurrent application environment 120 based on the performance scores ofthe requested performance metric 138. Based on the results of thecomparison, application manager 130 may be configured to determine amodel application environment 136 that yielded a higher score for therequested performance metric 138 compared to the score of theperformance metric 138 in the current application environment 120.Application manager 130 may determine a technology product 124 used forthe at least one technology component 122 in the determined modelapplication environment 136 and recommends using the determinedtechnology product 124 for the at least one technology component 122 toachieve the requested higher level of performance related to theperformance metric 138.

FIG. 2 is a flowchart of an example method 200 for processing anapplication environment for a software application, in accordance withcertain embodiments of the present disclosure. Method 200 may beperformed by application manager 130 as shown in FIG. 1 and describedabove.

At step 202, application manager 130 obtains information relating to acurrent application environment 120 being used to run a softwareapplication 112. As described above, current application system 110 mayrun the software application 112 in the current application environment120. The current application environment 120 may use technologycomponents (shown as 122 a-122 n), wherein each technology component 122a-122 n uses a respective technology product (shown as 124 a-124 n). Thetechnology components 122 a-122 n may include one or more hardwaretechnology components, one or more software technology components or acombination there of. For example, each technology component 122 a-122 nmay refer to a type of hardware or software tool used to implement, runand/or support the software application 112. For example, a technologycomponent may include, but is not limited to, a middleware component, anoperating system component, a database engine component, animplementation technology component (e.g., coding language used toimplement the software application 112), a cloud provider component, anetwork technology component (e.g., WAN, LAN, VPN etc.), avirtualization technique component and a server less computingtechnology component. A technology product 124 a-124 n may refer to aspecific hardware or software tool/technology used for a correspondingtechnology component. For example, Apache Tomcat® can be a technologyproduct used as a middleware component. Thus, the term “technologycomponent” may generally refer to a type of technology product, and theterm “technology product” may refer to a specific hardware or softwaretool used for a respective technology component. In one example case,current application environment 120 may include three technologycomponents 122 a, 122 b and 122 c using respective technology products124 a, 124 b and 124 c. Technology component 122 a may be a middlewarecomponent that uses Apache Tomcat server as the specific technologyproduct 124 a. Technology component 122 b may be a database enginecomponent that uses SQL server as the specific technology product 124 b.Technology component 122 c may be a virtualization technique componentthat uses VMware virtual machine as the specific technology product 124c.

Application manager 130 may obtain information relating to the currentapplication environment 120 being used for the software application 112.In one embodiment, application manager 130 may use an applicationconnector to obtain the information relating to the current applicationenvironment 120. The application connector may be a software agentdesigned to run on the current application system 110 and extractinformation relating to the current application environment 120 from thecurrent application system 110. The information extracted by theapplication connector may include information relating to the particulartechnology components 122 a-122 n of the current application environment120 and the specific technology products 124 a-124 n being used for eachtechnology component 122 a-122 n. In one embodiment, the informationextracted by the application connecter may include information relatingto one or more performance requirements of the software application withregard to one or more performance metrics 138 including load performanceand processing performance. As described below, the information relatingto the performance requirements of the software application may be usedby application manager 130 to recommend one or more model applicationenvironments 136 and/or technology products 124 that suit theperformance requirements.

At step 204, application manager 130 builds a plurality of modelapplication environments 136 for the software application 112, based onthe information obtained relating to the current application environment120.

As described above, several alternative technology products 124 aretypically available corresponding to each technology component 122 a-122n. For example, technology product alternatives for the operating system(OS) component may include, but are not limited to, Windows OS, LinuxOS, Redhat OS and Fedora OS. Technology product alternatives for theimplementation technology component may include, but are not limited to,C++, Java, C#, Python and JavaScript. Technology product alternativesfor the middleware technology component may include, but are not limitedto, Apache Tomcat server, JBoss server and Oracle server. Technologyproduct alternatives for the cloud component may include, but are notlimited to, Microsoft Azure, Amazon webservices and Google cloudplatform. Technology product alternatives for the network component mayinclude, but are not limited to, Local Area Network (LAN), Wireless(WLAN), Wide Area Network (WAN) and Virtual Private Network (VPN).Technology product alternatives for the virtualization techniquecomponent may include, but are not limited to, VMware, MicrosoftHyper-V, Openstack and Xen.

As described above, the technology products 124 a-124 n used for therespective technology components 122 a-122 n in the current applicationenvironment 120 may not be the most optimal for the software application112. That is, the current application environment 120 may not alwaysyield the performance desired for the software application 112.

Based on the information obtained from the current application system110, application manager 130 may build a plurality of alternative modelapplication environments 136 that can potentially be used for thesoftware application 112. For example, based on the information obtainedfrom the current application system 110, application manager 130 maydetermine the technology components 122 a-122 n that need to beincorporated into an application environment meant for the softwareapplication 112. Once, the technology components 122 a-122 n areidentified, application manager 130 may identify the plurality ofalternative technology products 124 available for each of the technologycomponents 122 a-122 n. The alternative technology products 124identified for each technology component 122 a-122 n may include thecurrent technology product 124 a-124 n being used in the currentapplication environment 120 for the technology components 122 a-122 n.Application manager 130 may build a plurality of model applicationenvironments 136 for the software application 112 by selecting for eachmodel application environment 136 a different combination of thetechnology products 124 for the technology components 122 a-122 n. Thatis, each model application environment 136 is built to use a combinationof technology products 124 that is different from the combinations oftechnology products 124 used for other model application environments136 built for the software application 112. In one embodiment, the modelapplication environments 136 include a copy of the current applicationenvironment 120. Application manager 130 builds the copy of the currentapplication environment 120 as part of building the model applicationenvironments 136 for comparing with other model application environments136.

In one example, when the technology components 122 a-122 n of thecurrent application environment 120 includes a middleware component, adatabase engine component and a virtualization technique component,application manager 130 may identify alternative technology products 124for each of a middleware component, a database engine component and avirtualization technique component. Application manager 130 may build aplurality of potential model application environments 136 for thesoftware application 112 by using different combinations of technologyproducts 124 for the middleware component, database engine component andvirtualization technique component. For example, application manager 130may build each model application environment by selecting a differentalternative technology product 124 for at least one of the technologycomponents 122 a-122 n. Additionally, application manager 130 may builda copy of the current application environment 120 by selectingtechnology products 124 a-124 n for the technology components 122 a-122n.

Application manager 130 may automatically configure each of the modelapplication environments 136 to suit the software application 112. Theapplication manager 130 may obtain information relating to how thesoftware application 112 is configured with respect to one or moreparameters (e.g., logging-in, load balancing, database details etc.) inthe current application environment 120. Application manager 130 mayconfigure each of the model application environments 136 for thesoftware application 112, based on the configurations in the currentapplication environment 120, for example, to match the configurations inthe current application environment 120. Application manager 130 mayalso configure one or more parameters of a model application environmentby modifying the configuration of the parameters in the currentapplication environment 120 to suit the model application environment136.

Application manager 130 may maintain information relating to performancebenchmarks 142 for each technology product 124 under distinctperformance conditions such as user traffic and amount of data beinghandled. A performance benchmark 142 relating to a technology product124 includes a level of performance provided by the technology product124 corresponding to at least one performance metric 138. A performancemetric 138, as discussed below, may relate to a load performance and/orprocessing speed performance of the technology product 124. For example,a technology product 124 may be associated with high load performancemeaning the technology product 124 can handle a large amount of usertraffic and/or large amount of data. Another technology product 124 maybe associated with high server performance which may mean that thetechnology product 124 provides fast server response times. Theperformance benchmarks 142 of the technology products 124 may allow theapplication manager 130 to build custom model application environmentsby selecting one or more technology products 124 that satisfy specificperformance requirements of the software application 112. For example,application manager 130 may obtain information relating to at least oneperformance requirement of the software application 112 corresponding toa technology component 122. For example, application manager 130 mayreceive a request for a level of performance associated with thetechnology component 122. Application manager 130 may determine atechnology product 124 available for the technology component 122 andthat satisfies the performance requirement, based on the performancebenchmark 142 stored for the technology product 124. Application manager130 may build a model application environment 136 for the softwareapplication 112 by selecting the technology product 124 for thetechnology component 122.

Application manager 130 may be configured to evolve to accommodate newand emerging technologies. For example, when a new technology product124 is added for a technology component 122, application manager 130 mayassess whether the newly added technology product 124 can be used in anapplication environment for the software application 112. For example,when the newly added technology product 124 corresponds to a technologycomponent 122 a-122 n being used by the current technology environment120 of the software application 112, application manager 130 maydetermine that the newly added technology product 124 may be used in theapplication environment of the software application 112. Additionally oralternatively, application manager 130 may determine whether the newlyadded technology product 124 satisfies one or more performancerequirements of the software application 112. Application manager 130may build a new model application environment 136 by selecting the newlyadded technology product 124 for the respective technology component122. Application manager 130 may build the new model applicationenvironment 136 in response to determining that the newly addedtechnology product 124 can be used in the application environment of thesoftware application 112 and/or that the newly added technology product124 satisfies at least one requirements of the software application 112.In one embodiment, application manager 130 may collect informationrelating to one or more performance requirements of the softwareapplication 112 according to a pre-determined schedule (e.g.,periodically). Application manager 130 may detect whether theperformance requirements of the software application 112 has changed andbuild a customized application environment for the software application112 based on current performance requirements of the softwareapplication 112. This may ensure that the current applicationenvironment 120 of the software application 112 evolves to accommodatethe changing performance requirements of the software application 112.

At step 206, application manager 130 runs the software application 112using each of the model application environments (including the copy ofthe current application environment 120) in a simulated environment.Application manager 130 may include a simulator logic that can beconfigured to host and deploy each of the model application environments136 (including the current application environment 120) and run thesoftware application 112 in each of the model application environments136.

At step 208, application manager 130 collects a plurality of performancemetrics 138 related to performance of the software application 112 inthe current application environment 120 and each of the modelapplication environments 136 while running in the simulated environment.In one embodiment, application manager 130 runs each model applicationenvironment 136 in the simulated environment and collects performancemetrics 138 for the model application environment 136 before moving onto the next model application environment.

Application manager 130 may collect data relating to a plurality ofperformance metrics 138 related to performance of the softwareapplication in each of the model application environments 136 (includingthe current application environment 120) while running in the simulatedenvironment. The plurality of performance metrics 138 may include, butare not limited to, one or more of application server performance,performance related to type of data handled by the software application,database performance, data security analysis, input and output analysisand deployment on cloud platforms. Application server performance mayrelate to response time of the application server at different levels ofload (e.g., user traffic, amount of data etc.). Performance data relatedto the type of data handled by the software application 112 may includeinformation relating to whether the software application 112 handlessensitive data needing a higher level of security and whether a modelapplication environment 136 can handle sensitive data. This performancemetric may allow the application manager 130 to recommend securetechnology products 124 that can securely handle sensitive user data,such as private cloud product or a virtual machine where thevirtualization is done at the hardware level to provide maximumsecurity. Database performance may relate to database response times.Data relating to data security analysis may include securityvulnerabilities (e.g., relating to data security) of the softwareapplication 112 in particular model application environments 136.Application manager 130 scans the software application 112 for knownvulnerabilities in each model application environment 136 and forpotential threats to the application 112. Application manager 130 maydetermine based on this performance metric whether a particular modelapplication environment 136 is vulnerable to attacks. Data related todeployment on cloud platforms may include information relating towhether the software application 112 can be deployed on cloud platforms.For example, application manager 130 may analyze whether the softwareapplication 112 is suitable for deploying on a cloud platform based onrunning the software application 112 in model application environments136 including cloud deployments. This performance metric may help theapplication manager 130 determine whether the software application 112can be deployed on cloud platforms or is more suitable for a privatein-house server or virtual machine deployment.

To measure the performance of the software application 112 in each modelapplication environment 136, application manager 130 may run one or moretests on each model application environment 136 while the simulatorlogic is running the software application 112 in the model applicationenvironment 136. Application manager 130 may collect one or more of theperformance metrics 138 described above corresponding to each modelapplication environment 136 as a result of conducting the one or moretests. The tests may include load testing to test the softwareapplication 112 at different amounts of load (e.g., user traffic, amountof data etc.). For example, load testing may include simulatingsimultaneous logins of different numbers of users using differentamounts of test data. Additionally or alternatively, the tests mayinclude performance testing to test the overall performance of a modelapplication environment 136 and collect data on performance metrics 142including availability, response time and stability of the softwareapplication 112. In one example, for each model application environment136, application manager 130 carries out the testing in multiple cycleswith different amounts of load. For example, each model applicationenvironment 136 is tested initially with 10 k simultaneous user loginsand 100 GB of test data. This test cycle is then repeated three timeswith a replication load factor of 2×. This means with each test cycle,the load applied is two times that applied in the previous test cycle.In one embodiment, the load size may be customized based on therequirements of the software application 112. In an additionalembodiment, application manager 130 tests each model applicationenvironment 136 for security vulnerabilities (e.g., data security) andcollects data relating to how vulnerable the model applicationenvironment 136 is to potential security threats.

At step, 210, application manager 130 checks whether performance metrics138 have been collected for all the model application environments 136(including the current application environment 120). If not, method 200proceeds to step 212, where application manager selects the next modelapplication environment 136 for running the software application 112 inthe simulated environment at step 206 and then collects performancemetrics 138 for the next model application environment 136. Ifapplication manager 130 determines that performance metrics 138 havebeen collected for all model application environments 136 including thecurrent application environment 120, method 200 proceeds to step 214.

At step 214, application manager 130 generates a recommendation report140 based on the collected performance metrics 138, wherein therecommendation report 140 includes a recommendation of a differenttechnology product 124 for at least one of the technology components 122a-122 n used in the current application environment 120, wherein thedifferent technology product 124 is different from a current technologyproduct 124 a-124 n used for the at least one technology component 122a-122 n in the current application environment 120.

Application manager 130 may analyze the performance metrics 138collected for each model application environment 136 (including thecurrent application environment 120) and generate the recommendationreport 140 based on the analysis. The recommendation report 140 mayinclude a recommendation to use one or more model applicationenvironments 136 for the software application 112 that are found toperform better than the current application environment 120 based on theanalysis of the performance metrics 138. Additionally or alternatively,the recommendation report 140 may include recommendations to useindividual technology products 124 for one or more technology components122 that satisfy one or more performance requirements of the softwareapplication 112.

In order to analyze the performance metrics 138, application manager 130may segregate the performance metrics 138 collected for each modelapplication environment 136 including the current applicationenvironment 120. The segregating may include grouping together datacollected for each performance metric 138 for all the model applicationenvironments 136. For example, data relating to application serverperformance metric collected for all model application environments 136may be grouped together. Similarly, data relating to databaseperformance metric collected for all model application environments 136may be grouped together. Application manager 130 may compare the modelapplication environments 136 based on each performance metric 138collected for the respective model application environments 136. Forexample, the application server performance metric of all modelapplication environments 136 may be compared separately. Similarly, thedatabase performance metric of all model application environments 136may be compared separately. Application manager 130 may recommend one ormore model application environments 136 and/or individual technologyproducts 124 based on results of the comparison.

In one or more embodiments, for each model application environment 136(including the current application environment 120), application manager130 assigns a performance score to each performance metric 138 collectedfor the model application environment 136. Application manager 130 mayassign a higher score for a higher level of performance related to aperformance metric 138. For example, if a first model applicationenvironment 136 is found to be able to handle 500 simultaneous userlogins at one time and a second model application environment 136 isfound to be able to handle 10 k simultaneous user logins at one time,the application performance metric for the second model applicationenvironment 136 is assigned a higher performance score than theapplication performance metric for the first model applicationenvironment 136. Application manager 130 may compare the respectivescores of each performance metric 138 collected for several modelapplication environments 136. Application manager 130 may recommend amodel application environment 136 that is found to have a higher scorewith regard to one or more performance metrics 138 as compared to therespective scores of the one or more performance metrics 138 collectedfor other model application environments 136. Following the aboveexample, application manager 130 may recommend the second modelapplication environment 136 for the software application 112 over thefirst model application environment 136 based on the higher scoreassociated with the application server performance metric collected forthe second model application environment 136.

In one or more embodiments, application manager 130 may compare thetotal performance scores of multiple performance metrics 138 collectedfor each model application environment 136 and recommend a modelapplication environment 136 that has the highest total performance scorefor the performance metrics 138. For example, application manager 130may compare the total performance scores of all performance metrics 138collected for each model application environment 136 and recommend amodel application environment 136 that has the highest total performancescore of for the performance metrics 138.

In one or more embodiments, application manager 130 may sort theperformance metrics 138 collected for each model application environment136 (including the current application environment 120) based on one ormore requirements of the software application 112, for example, byplacing a higher priority on performance metrics 138 that are associatedwith the one or more requirements of the software application 112.Application manager 130 may recommend one or more model applicationenvironments 136 and or individual technology products 124 that havehigher scores recorded for the prioritized performance metrics 138associated with the one or more requirements of the software application112, regardless of scores recorded for other performance metrics 138.For example, the software application 112 may require high databaseperformance (e.g., quick response times) and high data security as aresult of handling sensitive user data. Accordingly, application manager130 may prioritize the database performance metric and the securityperformance metric over other performance metrics 138 collected for themodel application environments 136. In this case, application manager130 recommends one or more model application environments 136 that werefound to have the highest scores for the database performance metric andthe security performance metric. Application manager 130 may obtain theone or more requirements of the software application 112 in response toreceiving a request for the one or more requirements or by automaticallydetermining the one or more requirements by analyzing one or moreperformance metrics 138 of the software application 112. For example,based on analyzing the software application 112 while running using oneor more model application environments 136, application manager maydetermine that the software application is vulnerable to cyber attacks.This detection may prompt the application manager 130 to prioritize thedata security metric for recommending model application environments 136that were found to have the highest scores related to the data securitymetric.

In one embodiment, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of a prioritized performance metric138 (e.g., database performance, application server performance etc.).If application manager 130 determines that a model applicationenvironment 136 has a higher score for the performance metric 138 ascompared to the respective score of the performance metric 138 collectedfor the current application environment 120, application manager 130 maydetermine at least one technology product 124 used for a correspondingtechnology component 122 associated with the performance metric 138 inthe determined model application environment 136 that is different fromthe current technology product 124 used for the technology component 122in the current application environment 120. Application manager 130recommend using the determined at least one technology product 124 forthe technology component 122 to achieve a higher level of performancerelated to the prioritized performance metric 138.

In an additional or alternative embodiment, application manager 130 mayreceive a request for a higher level of performance related to aperformance metric 138 associated with at least one technology component122 as compared to a current level of performance related to theperformance metric 138 in the current application environment 120. Inresponse, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of the requested performance metric138. Based on the results of the comparison, application manager 130 maydetermine a model application environment 136 that yielded a higherscore for the requested performance metric 138 compared to the score ofthe performance metric 138 in the current application environment 120.Application manager 130 may determine a technology product 124 used forthe at least one technology component 122 in the determined modelapplication environment 136 and recommends using the determinedtechnology product 124 for the at least one technology component 122 toachieve the requested higher level of performance related to theperformance metric 138.

FIG. 3 is a flowchart of an example method 300 for building applicationenvironments for a software application, in accordance with certainembodiments of the present disclosure. Method 300 may be performed byapplication manager 130 as shown in FIG. 1 and described above.

At step 302, application manager 130 obtains information relating to acurrent application environment 120 being used to run a softwareapplication 112. As described above, current application system 110 mayrun the software application 112 in the current application environment120. The current application environment 120 may use technologycomponents (shown as 122 a-122 n), wherein each technology component 122a-122 n uses a respective technology product (shown as 124 a-124 n) of aplurality of alternative technology products available for thetechnology component 122 a-122 n. The technology components 122 a-122 nmay include one or more hardware technology components, one or moresoftware technology components or a combination there of. For example,each technology component 122 a-122 n may refer to a type of hardware orsoftware tool used to implement, run and/or support the softwareapplication 112. For example, a technology component may include, but isnot limited to, a middleware component, an operating system component, adatabase engine component, an implementation technology component (e.g.,coding language used to implement the software application 112), a cloudprovider component, a network technology component (e.g., WAN, LAN, VPNetc.), a virtualization technique component and a server less computingtechnology component. A technology product 124 a-124 n may refer to aspecific hardware or software tool/technology used for a correspondingtechnology component. For example, Apache Tomcat® can be a technologyproduct used as a middleware component. Thus, the term “technologycomponent” may generally refer to a type of technology product, and theterm “technology product” may refer to a specific hardware or softwaretool used for a respective technology component. In one example case,current application environment 120 may include three technologycomponents 122 a, 122 b and 122 c using respective technology products124 a, 124 b and 124 c. Technology component 122 a may be a middlewarecomponent that uses Apache Tomcat server as the specific technologyproduct 124 a. Technology component 122 b may be a database enginecomponent that uses SQL server as the specific technology product 124 b.Technology component 122 c may be a virtualization technique componentthat uses VMware virtual machine as the specific technology product 124c.

Application manager 130 may obtain information relating to the currentapplication environment 120 being used for the software application 112.In one embodiment, application manager 130 may use an applicationconnector to obtain the information relating to the current applicationenvironment 120. The application connector may be a software agentdesigned to run on the current application system 110 and extractinformation relating to the current application environment 120 from thecurrent application system 110. The information extracted by theapplication connector may include information relating to the particulartechnology components 122 a-122 n of the current application environment120 and the specific technology products 124 a-124 n being used for eachtechnology component 122 a-122 n. In one embodiment, the informationextracted by the application connecter may include information relatingto one or more performance requirements of the software application withregard to one or more performance metrics 138 including load performanceand processing performance. The information relating to the performancerequirements of the software application may be used by applicationmanager 130 to recommend one or more model application environments 136and/or technology products 124 that suit the performance requirements.

At step 304, based on the obtained information related to the currentapplication environment 120, application manager 130 identifies the oneor more technology components 122 a-122 n being used in the currentapplication environment 120 to run the software application 112.

At step 306, based on the obtained information related to the currentapplication environment 120, application manager 130 further identifiesa plurality of alternative technology products available for each of theone or more technology components 120 a-120 n used in the currentapplication environment 120.

As described above, several alternative technology products 124 aretypically available corresponding to each technology component 122 a-122n. For example, technology product alternatives for the operating system(OS) component may include, but are not limited to, Windows OS, LinuxOS, Redhat OS and Fedora OS. Technology product alternatives for theimplementation technology component may include, but are not limited to,C++, Java, C#, Python and JavaScript. Technology product alternativesfor the middleware technology component may include, but are not limitedto, Apache Tomcat server, JBoss server and Oracle server. Technologyproduct alternatives for the cloud component may include, but are notlimited to, Microsoft Azure, Amazon webservices and Google cloudplatform. Technology product alternatives for the network component mayinclude, but are not limited to, Local Area Network (LAN), Wireless(WLAN), Wide Area Network (WAN) and Virtual Private Network (VPN).Technology product alternatives for the virtualization techniquecomponent may include, but are not limited to, VMware, MicrosoftHyper-V, Openstack and Xen.

Based on the information obtained from the current application system110, application manager 130 may build a plurality of alternative modelapplication environments 136 that can potentially be used for thesoftware application 112. For example, based on the information obtainedfrom the current application system 110, application manager 130 maydetermine the technology components 122 a-122 n that need to beincorporated into an application environment meant for the softwareapplication 112. Once, the technology components 122 a-122 n areidentified, application manager 130 may identify the plurality ofalternative technology products 124 available for each of the technologycomponents 122 a-122 n. The alternative technology products 124identified for each technology component 122 a-122 n may include thecurrent technology product 124 a-124 n being used in the currentapplication environment 120 for the technology components 122 a-122 n.Application manager 130 may build a plurality of model applicationenvironments 136 for the software application 112 by selecting for eachmodel application environment 136 a different combination of thetechnology products 124 for the technology components 122 a-122 n. Thatis, each model application environment 136 is built to use a combinationof technology products 124 that is different from the combinations oftechnology products 124 used for other model application environments136 built for the software application 112. In one embodiment, the modelapplication environments 136 include a copy of the current applicationenvironment 120. Application manager 130 builds the copy of the currentapplication environment 120 as part of building the model applicationenvironments 136 for comparing with other model application environments136.

In one example, when the technology components 122 a-122 n of thecurrent application environment 120 includes a middleware component, adatabase engine component and a virtualization technique component,application manager 130 may identify alternative technology products 124for each of a middleware component, a database engine component and avirtualization technique component. Application manager 130 may build aplurality of potential model application environments 136 for thesoftware application 112 by using different combinations of technologyproducts 124 for the middleware component, database engine component andvirtualization technique component. For example, application manager 130may build each model application environment by selecting a differentalternative technology product 124 for at least one of the technologycomponents 122 a-122 n. Additionally, application manager 130 may builda copy of the current application environment 120 by selectingtechnology products 124 a-124 n for the technology components 122 a-122n.

Application manager 130 may automatically configure each of the modelapplication environments 136 to suit the software application 112. Theapplication manager 130 may obtain information relating to how thesoftware application 112 is configured with respect to one or moreparameters (e.g., logging-in, load balancing, database details etc.) inthe current application environment 120. Application manager 130 mayconfigure each of the model application environments 136 for thesoftware application 112, based on the configurations in the currentapplication environment 120, for example, to match the configurations inthe current application environment 120. Application manager 130 mayalso configure one or more parameters of a model application environmentby modifying the configuration of the parameters in the currentapplication environment 120 to suit the model application environment136.

At step 308, application manager 130 receives a request for a level ofperformance associated with a technology component 120 a-120 n.

Application manager 130 may maintain information relating to performancebenchmarks 142 for each technology product 124 under distinctperformance conditions such as user traffic and amount of data beinghandled. A performance benchmark 142 relating to a technology product124 includes a level of performance provided by the technology product124 corresponding to at least one performance metric 138. A performancemetric 138, as discussed below, may relate to a load performance and/orprocessing speed performance of the technology product 124. For example,a technology product 124 may be associated with high load performancemeaning the technology product 124 can handle a large amount of usertraffic and/or large amount of data. Another technology product 124 maybe associated with high server performance which may mean that thetechnology product 124 provides fast server response times. Theperformance benchmarks 142 of the technology products 124 may allow theapplication manager 130 to build custom model application environmentsby selecting one or more technology products 124 that satisfy specificperformance requirements of the software application 112. For example,application manager 130 may obtain information relating to at least oneperformance requirement of the software application 112 corresponding toa technology component 122. For example, application manager 130 mayreceive a request for a level of performance associated with thetechnology component 122.

At step 310, Application manager 130 may determine whether a technologyproduct 124 is available for the technology component 122 that satisfiesthe performance requirement associated with the requested level ofperformance, based on performance benchmarks 142 stored for thealternative technology products 124 available for the technologycomponent 122. If a suitable technology product 124 is not available,method 300 ends here. However, if application manager 130 determines atechnology product 124 available for the technology component 122 thatsatisfies the requested level of performance, method 300 proceeds tostep 312, where application manager 130 selects the determinedtechnology product 124.

At step 314, application manager 130 builds a model applicationenvironment 136 for the software application 112 by selecting thetechnology product 124 for the technology component 122.

In one or more embodiments, application manager 130 may be configured toevolve to accommodate new and emerging technologies. For example, when anew technology product 124 is added for a technology component 122,application manager 130 may assess whether the newly added technologyproduct 124 can be used in an application environment for the softwareapplication 112. For example, when the newly added technology product124 corresponds to a technology component 122 a-122 n being used by thecurrent technology environment 120 of the software application 112,application manager 130 may determine that the newly added technologyproduct 124 may be used in the application environment of the softwareapplication 112. Additionally or alternatively, application manager 130may determine whether the newly added technology product 124 satisfiesone or more performance requirements of the software application 112.Application manager 130 may build a new model application environment136 by selecting the newly added technology product 124 for therespective technology component 122. Application manager 130 may buildthe new model application environment 136 in response to determiningthat the newly added technology product 124 can be used in theapplication environment of the software application 112 and/or that thenewly added technology product 124 satisfies at least one requirementsof the software application 112. In one embodiment, application manager130 may collect information relating to one or more performancerequirements of the software application 112 according to apre-determined schedule (e.g., periodically). Application manager 130may detect whether the performance requirements of the softwareapplication 112 has changed and build a customized applicationenvironment for the software application 112 based on currentperformance requirements of the software application 112. This mayensure that the current application environment 120 of the softwareapplication 112 evolves to accommodate the changing performancerequirements of the software application 112.

FIG. 4 is a flowchart of an example method 400 for improving anapplication environment for a software application, in accordance withcertain embodiments of the present disclosure. Method 400 may beperformed by application manager 130 as shown in FIG. 1 and describedabove.

At step 402, application manager 130 obtains information relating to acurrent application environment 120 being used to run a softwareapplication 112. As described above, current application system 110 mayrun the software application 112 in the current application environment120. The current application environment 120 may use technologycomponents (shown as 122 a-122 n), wherein each technology component 122a-122 n uses a respective technology product (shown as 124 a-124 n). Thetechnology components 122 a-122 n may include one or more hardwaretechnology components, one or more software technology components or acombination there of. For example, each technology component 122 a-122 nmay refer to a type of hardware or software tool used to implement, runand/or support the software application 112. For example, a technologycomponent may include, but is not limited to, a middleware component, anoperating system component, a database engine component, animplementation technology component (e.g., coding language used toimplement the software application 112), a cloud provider component, anetwork technology component (e.g., WAN, LAN, VPN etc.), avirtualization technique component and a server less computingtechnology component. A technology product 124 a-124 n may refer to aspecific hardware or software tool/technology used for a correspondingtechnology component. For example, Apache Tomcat® can be a technologyproduct used as a middleware component. Thus, the term “technologycomponent” may generally refer to a type of technology product, and theterm “technology product” may refer to a specific hardware or softwaretool used for a respective technology component. In one example case,current application environment 120 may include three technologycomponents 122 a, 122 b and 122 c using respective technology products124 a, 124 b and 124 c. Technology component 122 a may be a middlewarecomponent that uses Apache Tomcat server as the specific technologyproduct 124 a. Technology component 122 b may be a database enginecomponent that uses SQL server as the specific technology product 124 b.Technology component 122 c may be a virtualization technique componentthat uses VMware virtual machine as the specific technology product 124c.

Application manager 130 may obtain information relating to the currentapplication environment 120 being used for the software application 112.In one embodiment, application manager 130 may use an applicationconnector to obtain the information relating to the current applicationenvironment 120. The application connector may be a software agentdesigned to run on the current application system 110 and extractinformation relating to the current application environment 120 from thecurrent application system 110. The information extracted by theapplication connector may include information relating to the particulartechnology components 122 a-122 n of the current application environment120 and the specific technology products 124 a-124 n being used for eachtechnology component 122 a-122 n. In one embodiment, the informationextracted by the application connecter may include information relatingto one or more performance requirements of the software application withregard to one or more performance metrics 138 including load performanceand processing performance. As described below, the information relatingto the performance requirements of the software application may be usedby application manager 130 to recommend one or more model applicationenvironments 136 and/or technology products 124 that suit theperformance requirements.

At step 404, application manager 130 obtains information relating to aplurality of model application environments 136 built for the softwareapplication 112 based on the information obtained relating to thecurrent application environment 120.

As described above, several alternative technology products 124 aretypically available corresponding to each technology component 122 a-122n. For example, technology product alternatives for the operating system(OS) component may include, but are not limited to, Windows OS, LinuxOS, Redhat OS and Fedora OS. Technology product alternatives for theimplementation technology component may include, but are not limited to,C++, Java, C#, Python and JavaScript. Technology product alternativesfor the middleware technology component may include, but are not limitedto, Apache Tomcat server, JBoss server and Oracle server. Technologyproduct alternatives for the cloud component may include, but are notlimited to, Microsoft Azure, Amazon webservices and Google cloudplatform. Technology product alternatives for the network component mayinclude, but are not limited to, Local Area Network (LAN), Wireless(WLAN), Wide Area Network (WAN) and Virtual Private Network (VPN).Technology product alternatives for the virtualization techniquecomponent may include, but are not limited to, VMware, MicrosoftHyper-V, Openstack and Xen.

As described above, the technology products 124 a-124 n used for therespective technology components 122 a-122 n in the current applicationenvironment 120 may not be the most optimal for the software application112. That is, the current application environment 120 may not alwaysyield the performance desired for the software application 112.

Based on the information obtained from the current application system110, application manager 130 may build a plurality of alternative modelapplication environments 136 that can potentially be used for thesoftware application 112. For example, based on the information obtainedfrom the current application system 110, application manager 130 maydetermine the technology components 122 a-122 n that need to beincorporated into an application environment meant for the softwareapplication 112. Once, the technology components 122 a-122 n areidentified, application manager 130 may identify the plurality ofalternative technology products 124 available for each of the technologycomponents 122 a-122 n. The alternative technology products 124identified for each technology component 122 a-122 n may include thecurrent technology product 124 a-124 n being used in the currentapplication environment 120 for the technology components 122 a-122 n.Application manager 130 may build a plurality of model applicationenvironments 136 for the software application 112 by selecting for eachmodel application environment 136 a different combination of thetechnology products 124 for the technology components 122 a-122 n. Thatis, each model application environment 136 is built to use a combinationof technology products 124 that is different from the combinations oftechnology products 124 used for other model application environments136 built for the software application 112. In one embodiment, the modelapplication environments 136 include a copy of the current applicationenvironment 120. Application manager 130 builds the copy of the currentapplication environment 120 as part of building the model applicationenvironments 136 for comparing with other model application environments136.

In one example, when the technology components 122 a-122 n of thecurrent application environment 120 includes a middleware component, adatabase engine component and a virtualization technique component,application manager 130 may identify alternative technology products 124for each of a middleware component, a database engine component and avirtualization technique component. Application manager 130 may build aplurality of potential model application environments 136 for thesoftware application 112 by using different combinations of technologyproducts 124 for the middleware component, database engine component andvirtualization technique component. For example, application manager 130may build each model application environment by selecting a differentalternative technology product 124 for at least one of the technologycomponents 122 a-122 n. Additionally, application manager 130 may builda copy of the current application environment 120 by selectingtechnology products 124 a-124 n for the technology components 122 a-122n.

Application manager 130 may automatically configure each of the modelapplication environments 136 to suit the software application 112. Theapplication manager 130 may obtain information relating to how thesoftware application 112 is configured with respect to one or moreparameters (e.g., logging-in, load balancing, database details etc.) inthe current application environment 120. Application manager 130 mayconfigure each of the model application environments 136 for thesoftware application 112, based on the configurations in the currentapplication environment 120, for example, to match the configurations inthe current application environment 120. Application manager 130 mayalso configure one or more parameters of a model application environmentby modifying the configuration of the parameters in the currentapplication environment 120 to suit the model application environment136.

Application manager 130 may maintain information relating to performancebenchmarks 142 for each technology product 124 under distinctperformance conditions such as user traffic and amount of data beinghandled. A performance benchmark 142 relating to a technology product124 includes a level of performance provided by the technology product124 corresponding to at least one performance metric 138. A performancemetric 138, as discussed below, may relate to a load performance and/orprocessing speed performance of the technology product 124. For example,a technology product 124 may be associated with high load performancemeaning the technology product 124 can handle a large amount of usertraffic and/or large amount of data. Another technology product 124 maybe associated with high server performance which may mean that thetechnology product 124 provides fast server response times. Theperformance benchmarks 142 of the technology products 124 may allow theapplication manager 130 to build custom model application environmentsby selecting one or more technology products 124 that satisfy specificperformance requirements of the software application 112. For example,application manager 130 may obtain information relating to at least oneperformance requirement of the software application 112 corresponding toa technology component 122. For example, application manager 130 mayreceive a request for a level of performance associated with thetechnology component 122. Application manager 130 may determine atechnology product 124 available for the technology component 122 andthat satisfies the performance requirement, based on the performancebenchmark 142 stored for the technology product 124. Application manager130 may build a model application environment 136 for the softwareapplication 112 by selecting the technology product 124 for thetechnology component 122.

Application manager 130 may be configured to evolve to accommodate newand emerging technologies. For example, when a new technology product124 is added for a technology component 122, application manager 130 mayassess whether the newly added technology product 124 can be used in anapplication environment for the software application 112. For example,when the newly added technology product 124 corresponds to a technologycomponent 122 a-122 n being used by the current technology environment120 of the software application 112, application manager 130 maydetermine that the newly added technology product 124 may be used in theapplication environment of the software application 112. Additionally oralternatively, application manager 130 may determine whether the newlyadded technology product 124 satisfies one or more performancerequirements of the software application 112. Application manager 130may build a new model application environment 136 by selecting the newlyadded technology product 124 for the respective technology component122. Application manager 130 may build the new model applicationenvironment 136 in response to determining that the newly addedtechnology product 124 can be used in the application environment of thesoftware application 112 and/or that the newly added technology product124 satisfies at least one requirements of the software application 112.In one embodiment, application manager 130 may collect informationrelating to one or more performance requirements of the softwareapplication 112 according to a pre-determined schedule (e.g.,periodically). Application manager 130 may detect whether theperformance requirements of the software application 112 has changed andbuild a customized application environment for the software application112 based on current performance requirements of the softwareapplication 112. This may ensure that the current applicationenvironment 120 of the software application 112 evolves to accommodatethe changing performance requirements of the software application 112.

At step 406, application manager 130 runs the software application 112using each of the model application environments (including the copy ofthe current application environment 120) in a simulated environment.Application manager 130 may include a simulator logic that can beconfigured to host and deploy each of the model application environments136 (including the current application environment 120) and run thesoftware application 112 in each of the model application environments136.

At step 408, application manager 130 collects a plurality of performancemetrics 138 related to performance of the software application 112 inthe current application environment 120 and each of the modelapplication environments 136 while running in the simulated environment.In one embodiment, application manager 130 runs each model applicationenvironment 136 in the simulated environment and collects performancemetrics 138 for the model application environment 136 before moving onto the next model application environment.

Application manager 130 may collect data relating to a plurality ofperformance metrics 138 related to performance of the softwareapplication in each of the model application environments 136 (includingthe current application environment 120) while running in the simulatedenvironment. The plurality of performance metrics 138 may include, butare not limited to, one or more of application server performance,performance related to type of data handled by the software application,database performance, data security analysis, input and output analysisand deployment on cloud platforms. Application server performance mayrelate to response time of the application server at different levels ofload (e.g., user traffic, amount of data etc.). Performance data relatedto the type of data handled by the software application 112 may includeinformation relating to whether the software application 112 handlessensitive data needing a higher level of security and whether a modelapplication environment 136 can handle sensitive data. This performancemetric may allow the application manager 130 to recommend securetechnology products 124 that can securely handle sensitive user data,such as private cloud product or a virtual machine where thevirtualization is done at the hardware level to provide maximumsecurity. Database performance may relate to database response times.Data relating to data security analysis may include securityvulnerabilities (e.g., relating to data security) of the softwareapplication 112 in particular model application environments 136.Application manager 130 scans the software application 112 for knownvulnerabilities in each model application environment 136 and forpotential threats to the application 112. Application manager 130 maydetermine based on this performance metric whether a particular modelapplication environment 136 is vulnerable to attacks. Data related todeployment on cloud platforms may include information relating towhether the software application 112 can be deployed on cloud platforms.For example, application manager 130 may analyze whether the softwareapplication 112 is suitable for deploying on a cloud platform based onrunning the software application 112 in model application environments136 including cloud deployments. This performance metric may help theapplication manager 130 determine whether the software application 112can be deployed on cloud platforms or is more suitable for a privatein-house server or virtual machine deployment.

To measure the performance of the software application 112 in each modelapplication environment 136, application manager 130 may run one or moretests on each model application environment 136 while the simulatorlogic is running the software application 112 in the model applicationenvironment 136. Application manager 130 may collect one or more of theperformance metrics 138 described above corresponding to each modelapplication environment 136 as a result of conducting the one or moretests. The tests may include load testing to test the softwareapplication 112 at different amounts of load (e.g., user traffic, amountof data etc.). For example, load testing may include simulatingsimultaneous logins of different numbers of users using differentamounts of test data. Additionally or alternatively, the tests mayinclude performance testing to test the overall performance of a modelapplication environment 136 and collect data on performance metrics 142including availability, response time and stability of the softwareapplication 112. In one example, for each model application environment136, application manager 130 carries out the testing in multiple cycleswith different amounts of load. For example, each model applicationenvironment 136 is tested initially with 10 k simultaneous user loginsand 100 GB of test data. This test cycle is then repeated three timeswith a replication load factor of 2×. This means with each test cycle,the load applied is two times that applied in the previous test cycle.In one embodiment, the load size may be customized based on therequirements of the software application 112. In an additionalembodiment, application manager 130 tests each model applicationenvironment 136 for security vulnerabilities (e.g., data security) andcollects data relating to how vulnerable the model applicationenvironment 136 is to potential security threats.

At step, 410, application manager 130 checks whether performance metrics138 have been collected for all the model application environments 136(including the current application environment 120). If not, method 400proceeds to step 412, where application manager selects the next modelapplication environment 136 for running the software application 112 inthe simulated environment at step 206 and then collects performancemetrics 138 for the next model application environment 136. Ifapplication manager 130 determines that performance metrics 138 havebeen collected for all model application environments 136 including thecurrent application environment 120, method 400 proceeds to step 414.

At step 414, application manager 130 assigns a score to each of theperformance metrics 138 collected for each of the model applicationenvironments including the current application environment 120, whereina higher score is assigned to a higher level of performance related tothe performance metric 138.

As described above, Application manager 130 may analyze the performancemetrics 138 collected for each model application environment 136(including the current application environment 120) and generate arecommendation report 140 based on the analysis. The recommendationreport 140 may include a recommendation to use one or more modelapplication environments 136 for the software application 112 that arefound to perform better than the current application environment 120based on the analysis of the performance metrics 138. Additionally oralternatively, the recommendation report 140 may include recommendationsto use individual technology products 124 for one or more technologycomponents 122 that satisfy one or more performance requirements of thesoftware application 112.

For each model application environment 136 (including the currentapplication environment 120), application manager 130 assigns aperformance score to each performance metric 138 collected for the modelapplication environment 136. Application manager 130 may assign a higherscore for a higher level of performance related to a performance metric138. For example, if a first model application environment 136 is foundto be able to handle 500 simultaneous user logins at one time and asecond model application environment 136 is found to be able to handle10 k simultaneous user logins at one time, the application performancemetric for the second model application environment 136 is assigned ahigher performance score than the application performance metric for thefirst model application environment 136. Application manager 130 maycompare the respective scores of each performance metric 138 collectedfor several model application environments 136. Application manager 130may recommend a model application environment 136 that is found to havea higher score with regard to one or more performance metrics 138 ascompared to the respective scores of the one or more performance metrics138 collected for other model application environments 136. Followingthe above example, application manager 130 may recommend the secondmodel application environment 136 for the software application 112 overthe first model application environment 136 based on the higher scoreassociated with the application server performance metric collected forthe second model application environment 136.

At step 416, application manager 130 determines a model applicationenvironment 136 that yielded a higher score for a performance metric 138compared to the score of the performance metric 138 in the currentapplication environment. For example, application manager 130 maycompare one or more model application environments 136 with the currentapplication environment 120 based on the performance scores of aprioritized performance metric 138 (e.g., database performance,application server performance etc.).

At step 418, when application manager 130 determines that the modelapplication environment 136 has a higher score for the performancemetric 138 as compared to the respective score of the performance metric138 collected for the current application environment 120, applicationmanager 130 determines at least one technology product 124 used for acorresponding technology component 122 associated with the performancemetric 138 in the determined model application environment 136 that isdifferent from the current technology product 124 used for thetechnology component 122 in the current application environment 120.

At step 420, Application manager 130 recommends using the determined atleast one technology product 124 for the technology component 122 in theapplication environment of the software application 112, to achieve ahigher level of performance related to the performance metric 138.

In additional or alternative embodiments, application manager 130 maysegregate the performance metrics 138 collected for each modelapplication environment 136 including the current applicationenvironment 120. The segregating may include grouping together datacollected for each performance metric 138 for all the model applicationenvironments 136. For example, data relating to application serverperformance metric collected for all model application environments 136may be grouped together. Similarly, data relating to databaseperformance metric collected for all model application environments 136may be grouped together. Application manager 130 may compare the modelapplication environments 136 based on each performance metric 138collected for the respective model application environments 136, forexample, based on performance scores of the performance metric 138collected for the model application environments. For example, theapplication server performance metric of all model applicationenvironments 136 may be compared separately. Similarly, the databaseperformance metric of all model application environments 136 may becompared separately. Application manager 130 may recommend one or moremodel application environments 136 and/or individual technology products124 based on results of the comparison.

In one or more embodiments, application manager 130 may compare thetotal performance scores of multiple performance metrics 138 collectedfor each model application environment 136 and recommend a modelapplication environment 136 that has the highest total performance scorefor the performance metrics 138. For example, application manager 130may compare the total performance scores of all performance metrics 138collected for each model application environment 136 and recommend amodel application environment 136 that has the highest total performancescore of for the performance metrics 138.

In one or more embodiments, application manager 130 may sort theperformance metrics 138 collected for each model application environment136 (including the current application environment 120) based on one ormore requirements of the software application 112, for example, byplacing a higher priority on performance metrics 138 that are associatedwith the one or more requirements of the software application 112.Application manager 130 may recommend one or more model applicationenvironments 136 and or individual technology products 124 that havehigher scores recorded for the prioritized performance metrics 138associated with the one or more requirements of the software application112, regardless of scores recorded for other performance metrics 138.For example, the software application 112 may require high databaseperformance (e.g., quick response times) and high data security as aresult of handling sensitive user data. Accordingly, application manager130 may prioritize the database performance metric and the securityperformance metric over other performance metrics 138 collected for themodel application environments 136. In this case, application manager130 recommends one or more model application environments 136 that werefound to have the highest scores for the database performance metric andthe security performance metric. Application manager 130 may obtain theone or more requirements of the software application 112 in response toreceiving a request for the one or more requirements or by automaticallydetermining the one or more requirements by analyzing one or moreperformance metrics 138 of the software application 112. For example,based on analyzing the software application 112 while running using oneor more model application environments 136, application manager maydetermine that the software application is vulnerable to cyber attacks.This detection may prompt the application manager 130 to prioritize thedata security metric for recommending model application environments 136that were found to have the highest scores related to the data securitymetric.

In an additional or alternative embodiment, application manager 130 mayreceive a request for a higher level of performance related to aperformance metric 138 associated with at least one technology component122 as compared to a current level of performance related to theperformance metric 138 in the current application environment 120. Inresponse, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of the requested performance metric138. Based on the results of the comparison, application manager 130 maydetermine a model application environment 136 that yielded a higherscore for the requested performance metric 138 compared to the score ofthe performance metric 138 in the current application environment 120.Application manager 130 may determine a technology product 124 used forthe at least one technology component 122 in the determined modelapplication environment 136 and recommends using the determinedtechnology product 124 for the at least one technology component 122 toachieve the requested higher level of performance related to theperformance metric 138.

FIG. 5 is a flowchart of an example method 500 for analyzing performancemetrics collected for model application environments of a softwareapplication, in accordance with certain embodiments of the presentdisclosure. Method 500 may be performed by application manager 130 asshown in FIG. 1 and described above.

At step 502, application manager 130 obtains information about aplurality of performance metrics 138 related to performance of asoftware application 112 in a current application environment 120 andeach of a plurality of model application environments 136.

As described above, current application system 110 may run the softwareapplication 112 in the current application environment 120. The currentapplication environment 120 may use technology components (shown as 122a-122 n), wherein each technology component 122 a-122 n uses arespective technology product (shown as 124 a-124 n). The technologycomponents 122 a-122 n may include one or more hardware technologycomponents, one or more software technology components or a combinationthere of. For example, each technology component 122 a-122 n may referto a type of hardware or software tool used to implement, run and/orsupport the software application 112. For example, a technologycomponent may include, but is not limited to, a middleware component, anoperating system component, a database engine component, animplementation technology component (e.g., coding language used toimplement the software application 112), a cloud provider component, anetwork technology component (e.g., WAN, LAN, VPN etc.), avirtualization technique component and a server less computingtechnology component. A technology product 124 a-124 n may refer to aspecific hardware or software tool/technology used for a correspondingtechnology component. For example, Apache Tomcat® can be a technologyproduct used as a middleware component. Thus, the term “technologycomponent” may generally refer to a type of technology product, and theterm “technology product” may refer to a specific hardware or softwaretool used for a respective technology component. In one example case,current application environment 120 may include three technologycomponents 122 a, 122 b and 122 c using respective technology products124 a, 124 b and 124 c. Technology component 122 a may be a middlewarecomponent that uses Apache Tomcat server as the specific technologyproduct 124 a. Technology component 122 b may be a database enginecomponent that uses SQL server as the specific technology product 124 b.Technology component 122 c may be a virtualization technique componentthat uses VMware virtual machine as the specific technology product 124c.

Application manager 130 may obtain information relating to the currentapplication environment 120 being used for the software application 112.In one embodiment, application manager 130 may use an applicationconnector to obtain the information relating to the current applicationenvironment 120. The application connector may be a software agentdesigned to run on the current application system 110 and extractinformation relating to the current application environment 120 from thecurrent application system 110. The information extracted by theapplication connector may include information relating to the particulartechnology components 122 a-122 n of the current application environment120 and the specific technology products 124 a-124 n being used for eachtechnology component 122 a-122 n. In one embodiment, the informationextracted by the application connecter may include information relatingto one or more performance requirements of the software application withregard to one or more performance metrics 138 including load performanceand processing performance. As described below, the information relatingto the performance requirements of the software application may be usedby application manager 130 to recommend one or more model applicationenvironments 136 and/or technology products 124 that suit theperformance requirements.

Several alternative technology products 124 are typically availablecorresponding to each technology component 122 a-122 n. For example,technology product alternatives for the operating system (OS) componentmay include, but are not limited to, Windows OS, Linux OS, Redhat OS andFedora OS. Technology product alternatives for the implementationtechnology component may include, but are not limited to, C++, Java, C#,Python and JavaScript. Technology product alternatives for themiddleware technology component may include, but are not limited to,Apache Tomcat server, JBoss server and Oracle server. Technology productalternatives for the cloud component may include, but are not limitedto, Microsoft Azure, Amazon webservices and Google cloud platform.Technology product alternatives for the network component may include,but are not limited to, Local Area Network (LAN), Wireless (WLAN), WideArea Network (WAN) and Virtual Private Network (VPN). Technology productalternatives for the virtualization technique component may include, butare not limited to, VMware, Microsoft Hyper-V, Openstack and Xen.

Based on the information obtained from the current application system110, application manager 130 may build a plurality of alternative modelapplication environments 136 that can potentially be used for thesoftware application 112. For example, based on the information obtainedfrom the current application system 110, application manager 130 maydetermine the technology components 122 a-122 n that need to beincorporated into an application environment meant for the softwareapplication 112. Once, the technology components 122 a-122 n areidentified, application manager 130 may identify the plurality ofalternative technology products 124 available for each of the technologycomponents 122 a-122 n. The alternative technology products 124identified for each technology component 122 a-122 n may include thecurrent technology product 124 a-124 n being used in the currentapplication environment 120 for the technology components 122 a-122 n.Application manager 130 may build a plurality of model applicationenvironments 136 for the software application 112 by selecting for eachmodel application environment 136 a different combination of thetechnology products 124 for the technology components 122 a-122 n. Thatis, each model application environment 136 is built to use a combinationof technology products 124 that is different from the combinations oftechnology products 124 used for other model application environments136 built for the software application 112. In one embodiment, the modelapplication environments 136 include a copy of the current applicationenvironment 120. Application manager 130 builds the copy of the currentapplication environment 120 as part of building the model applicationenvironments 136 for comparing with other model application environments136.

Application manager 130 may run the software application 112 using eachof the model application environments (including the copy of the currentapplication environment 120) in a simulated environment and collect theplurality of performance metrics 138 related to performance of thesoftware application 112 in the current application environment 120 andeach of the model application environments 136 while running in thesimulated environment.

Application manager 130 may collect data relating to the plurality ofperformance metrics 138 related to performance of the softwareapplication in each of the model application environments 136 (includingthe current application environment 120) while running in the simulatedenvironment. The plurality of performance metrics 138 may include, butare not limited to, one or more of application server performance,performance related to type of data handled by the software application,database performance, data security analysis, input and output analysisand deployment on cloud platforms. Application server performance mayrelate to response time of the application server at different levels ofload (e.g., user traffic, amount of data etc.). Performance data relatedto the type of data handled by the software application 112 may includeinformation relating to whether the software application 112 handlessensitive data needing a higher level of security and whether a modelapplication environment 136 can handle sensitive data. This performancemetric may allow the application manager 130 to recommend securetechnology products 124 that can securely handle sensitive user data,such as private cloud product or a virtual machine where thevirtualization is done at the hardware level to provide maximumsecurity. Database performance may relate to database response times.Data relating to data security analysis may include securityvulnerabilities (e.g., relating to data security) of the softwareapplication 112 in particular model application environments 136.Application manager 130 scans the software application 112 for knownvulnerabilities in each model application environment 136 and forpotential threats to the application 112. Application manager 130 maydetermine based on this performance metric whether a particular modelapplication environment 136 is vulnerable to attacks. Data related todeployment on cloud platforms may include information relating towhether the software application 112 can be deployed on cloud platforms.For example, application manager 130 may analyze whether the softwareapplication 112 is suitable for deploying on a cloud platform based onrunning the software application 112 in model application environments136 including cloud deployments. This performance metric may help theapplication manager 130 determine whether the software application 112can be deployed on cloud platforms or is more suitable for a privatein-house server or virtual machine deployment.

To measure the performance of the software application 112 in each modelapplication environment 136, application manager 130 may run one or moretests on each model application environment 136 while the simulatorlogic is running the software application 112 in the model applicationenvironment 136. Application manager 130 may collect one or more of theperformance metrics 138 described above corresponding to each modelapplication environment 136 as a result of conducting the one or moretests. The tests may include load testing to test the softwareapplication 112 at different amounts of load (e.g., user traffic, amountof data etc.). For example, load testing may include simulatingsimultaneous logins of different numbers of users using differentamounts of test data. Additionally or alternatively, the tests mayinclude performance testing to test the overall performance of a modelapplication environment 136 and collect data on performance metrics 142including availability, response time and stability of the softwareapplication 112. In one example, for each model application environment136, application manager 130 carries out the testing in multiple cycleswith different amounts of load. For example, each model applicationenvironment 136 is tested initially with 10 k simultaneous user loginsand 100 GB of test data. This test cycle is then repeated three timeswith a replication load factor of 2×. This means with each test cycle,the load applied is two times that applied in the previous test cycle.In one embodiment, the load size may be customized based on therequirements of the software application 112. In an additionalembodiment, application manager 130 tests each model applicationenvironment 136 for security vulnerabilities (e.g., data security) andcollects data relating to how vulnerable the model applicationenvironment 136 is to potential security threats.

At step 504, application manager 130 assigns a performance score to eachof the performance metrics collected for the current applicationenvironment and each of the model application environments.

Application manager 130 may analyze the performance metrics 138collected for each model application environment 136 (including thecurrent application environment 120) and generate the recommendationreport 140 based on the analysis. The recommendation report 140 mayinclude a recommendation to use one or more model applicationenvironments 136 for the software application 112 that are found toperform better than the current application environment 120 based on theanalysis of the performance metrics 138. Additionally or alternatively,the recommendation report 140 may include recommendations to useindividual technology products 124 for one or more technology components122 that satisfy one or more performance requirements of the softwareapplication 112.

To analyze the performance metrics 138, for each model applicationenvironment 136 (including the current application environment 120),application manager 130 assigns a performance score to each performancemetric 138 collected for the model application environment 136.Application manager 130 may assign a higher score for a higher level ofperformance related to a performance metric 138. For example, if a firstmodel application environment 136 is found to be able to handle 500simultaneous user logins at one time and a second model applicationenvironment 136 is found to be able to handle 10 k simultaneous userlogins at one time, the application performance metric for the secondmodel application environment 136 is assigned a higher performance scorethan the application performance metric for the first model applicationenvironment 136.

At step 506, application manager 130 compares the respective scoresassigned to each performance metric 138 collected for the currentapplication environment 120 and each of the model applicationenvironments 136.

At step 508, application manager 130 checks if all performance metrics138 collected for all model application environments have been compared.If not, application manager 130 continues comparing the performancemetrics at step 506. When all performance metrics 138 collected for allmodel application environments have been compared, method 500 proceedsto step 510.

At step 510, application manager 130 detects that at least one modelapplication environment 136 has a higher score associated with at leastone performance metric 138 as compared to the respective score of the atleast one performance metric 138 collected for the current applicationenvironment 120.

At step 512, application manager recommends the model applicationenvironment 136 that is found to have a higher score with regard to theat least one performance metric 138 as compared to the respective scoreof the at least one performance metrics 138 collected for the currentapplication environment 120. For example, application manager 130 mayrecommend a model application environment 136 for the softwareapplication 112 over the current application environment 120 based on ahigher score associated with the application server performance metriccollected for the model application environment 136.

In additional or alternative embodiments, application manager 130 maysegregate the performance metrics 138 collected for each modelapplication environment 136 including the current applicationenvironment 120. The segregating may include grouping together datacollected for each performance metric 138 for all the model applicationenvironments 136. For example, data relating to application serverperformance metric collected for all model application environments 136may be grouped together. Similarly, data relating to databaseperformance metric collected for all model application environments 136may be grouped together. Application manager 130 may compare the modelapplication environments 136 based on each performance metric 138collected for the respective model application environments 136, forexample, based on performance scores of the performance metric 138collected for the model application environments. For example, theapplication server performance metric of all model applicationenvironments 136 may be compared separately. Similarly, the databaseperformance metric of all model application environments 136 may becompared separately. Application manager 130 may recommend one or moremodel application environments 136 and/or individual technology products124 based on results of the comparison.

In one or more embodiments, application manager 130 may compare thetotal performance scores of multiple performance metrics 138 collectedfor each model application environment 136 and recommend a modelapplication environment 136 that has the highest total performance scorefor the performance metrics 138. For example, application manager 130may compare the total performance scores of all performance metrics 138collected for each model application environment 136 and recommend amodel application environment 136 that has the highest total performancescore of for the performance metrics 138.

In one or more embodiments, application manager 130 may sort theperformance metrics 138 collected for each model application environment136 (including the current application environment 120) based on one ormore requirements of the software application 112, for example, byplacing a higher priority on performance metrics 138 that are associatedwith the one or more requirements of the software application 112.Application manager 130 may recommend one or more model applicationenvironments 136 and or individual technology products 124 that havehigher scores recorded for the prioritized performance metrics 138associated with the one or more requirements of the software application112, regardless of scores recorded for other performance metrics 138.For example, the software application 112 may require high databaseperformance (e.g., quick response times) and high data security as aresult of handling sensitive user data. Accordingly, application manager130 may prioritize the database performance metric and the securityperformance metric over other performance metrics 138 collected for themodel application environments 136. In this case, application manager130 recommends one or more model application environments 136 that werefound to have the highest scores for the database performance metric andthe security performance metric. Application manager 130 may obtain theone or more requirements of the software application 112 in response toreceiving a request for the one or more requirements or by automaticallydetermining the one or more requirements by analyzing one or moreperformance metrics 138 of the software application 112. For example,based on analyzing the software application 112 while running using oneor more model application environments 136, application manager maydetermine that the software application is vulnerable to cyber attacks.This detection may prompt the application manager 130 to prioritize thedata security metric for recommending model application environments 136that were found to have the highest scores related to the data securitymetric.

In one embodiment, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of a prioritized performance metric138 (e.g., database performance, application server performance etc.).If application manager 130 determines that a model applicationenvironment 136 has a higher score for the performance metric 138 ascompared to the respective score of the performance metric 138 collectedfor the current application environment 120, application manager 130 maydetermine at least one technology product 124 used for a correspondingtechnology component 122 associated with the performance metric 138 inthe determined model application environment 136 that is different fromthe current technology product 124 used for the technology component 122in the current application environment 120. Application manager 130recommend using the determined at least one technology product 124 forthe technology component 122 to achieve a higher level of performancerelated to the prioritized performance metric 138.

In an additional or alternative embodiment, application manager 130 mayreceive a request for a higher level of performance related to aperformance metric 138 associated with at least one technology component122 as compared to a current level of performance related to theperformance metric 138 in the current application environment 120. Inresponse, application manager 130 may compare one or more modelapplication environments 136 with the current application environment120 based on the performance scores of the requested performance metric138. Based on the results of the comparison, application manager 130 maydetermine a model application environment 136 that yielded a higherscore for the requested performance metric 138 compared to the score ofthe performance metric 138 in the current application environment 120.Application manager 130 may determine a technology product 124 used forthe at least one technology component 122 in the determined modelapplication environment 136 and recommends using the determinedtechnology product 124 for the at least one technology component 122 toachieve the requested higher level of performance related to theperformance metric 138.

FIG. 6 illustrates an example schematic diagram of the applicationmanager 130 illustrated in FIG. 1 , in accordance with one or moreembodiments of the present disclosure.

Application manager 130 includes a processor 602, a memory 606, and anetwork interface 604. The application manager 130 may be configured asshown in FIG. 6 or in any other suitable configuration.

The processor 602 comprises one or more processors operably coupled tothe memory 606. The processor 602 is any electronic circuitry including,but not limited to, state machines, one or more central processing unit(CPU) chips, logic units, cores (e.g. a multi-core processor),field-programmable gate array (FPGAs), application specific integratedcircuits (ASICs), or digital signal processors (DSPs). The processor 602may be a programmable logic device, a microcontroller, a microprocessor,or any suitable combination of the preceding. The processor 602 iscommunicatively coupled to and in signal communication with the memory606. The one or more processors are configured to process data and maybe implemented in hardware or software. For example, the processor 602may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitablearchitecture. The processor 602 may include an arithmetic logic unit(ALU) for performing arithmetic and logic operations, processorregisters that supply operands to the ALU and store the results of ALUoperations, and a control unit that fetches instructions from memory andexecutes them by directing the coordinated operations of the ALU,registers and other components.

The one or more processors are configured to implement variousinstructions. For example, the one or more processors are configured toexecute instructions (e.g., application manager instructions 608) toimplement the application manager 130. In this way, processor 602 may bea special-purpose computer designed to implement the functions disclosedherein. In one or more embodiments, the application manager 130 isimplemented using logic units, FPGAs, ASICs, DSPs, or any other suitablehardware. The application manager 130 is configured to operate asdescribed with reference to FIGS. 1-5 . For example, the applicationmanager 130 may be configured to perform at least a portion of themethods 200, 300, 400 and 500 as described in FIGS. 2, 3, 4 and 5respectively.

The memory 606 comprises one or more disks, tape drives, or solid-statedrives, and may be used as an over-flow data storage device, to storeprograms when such programs are selected for execution, and to storeinstructions and data that are read during program execution. The memory606 may be volatile or non-volatile and may comprise a read-only memory(ROM), random-access memory (RAM), ternary content-addressable memory(TCAM), dynamic random-access memory (DRAM), and static random-accessmemory (SRAM).

The memory 606 is operable to store information relating to technologycomponents 122, technology products 124, model application environments136, performance metrics 138, recommendation reports 140, performancebenchmarks 142 and application manager instructions 608. The applicationmanager instructions 608 may include any suitable set of instructions,logic, rules, or code operable to execute the application manager 130.

The network interface 604 is configured to enable wired and/or wirelesscommunications. The network interface 604 is configured to communicatedata between the application manager 130 and other devices, systems, ordomains (e.g. current application system 110). For example, the networkinterface 604 may comprise a Wi-Fi interface, a LAN interface, a WANinterface, a modem, a switch, or a router. The processor 602 isconfigured to send and receive data using the network interface 604. Thenetwork interface 604 may be configured to use any suitable type ofcommunication protocol as would be appreciated by one of ordinary skillin the art.

It may be noted that current application system 110 may be implementedsimilar to the application manager 130. For example, the currentapplication system 110 may include a processor and a memory storinginstructions to implement the respective functionality as describedabove when executed by the processor. The memory of current applicationsystem 110 may store the software application 112 and the currentapplication environment 120.

While several embodiments have been provided in the present disclosure,it should be understood that the disclosed systems and methods might beembodied in many other specific forms without departing from the spiritor scope of the present disclosure. The present examples are to beconsidered as illustrative and not restrictive, and the intention is notto be limited to the details given herein. For example, the variouselements or components may be combined or integrated in another systemor certain features may be omitted, or not implemented.

In addition, techniques, systems, subsystems, and methods described andillustrated in the various embodiments as discrete or separate may becombined or integrated with other systems, modules, techniques, ormethods without departing from the scope of the present disclosure.Other items shown or discussed as coupled or directly coupled orcommunicating with each other may be indirectly coupled or communicatingthrough some interface, device, or intermediate component whetherelectrically, mechanically, or otherwise. Other examples of changes,substitutions, and alterations are ascertainable by one skilled in theart and could be made without departing from the spirit and scopedisclosed herein.

To aid the Patent Office, and any readers of any patent issued on thisapplication in interpreting the claims appended hereto, applicants notethat they do not intend any of the appended claims to invoke 35 U.S.C. §112(f) as it exists on the date of filing hereof unless the words “meansfor” or “step for” are explicitly used in the particular claim.

1. A system comprising: at least one processor configured to: obtain information relating to a current application environment being used to run a software application, wherein the current application environment comprises one or more technology components including one or more hardware technology components, one or more software technology components or a combination thereof, wherein each of the technology components uses a technology product from a plurality of alternative technology products available for the technology component; obtain information relating to a plurality of model application environments for the software application, wherein each of the model application environments comprises a different combination of the technology products used for the technology components; run the software application using the current application environment and each of the model application environments in a simulated environment; collect a plurality of performance metrics related to performance of the software application in the current application environment and each of the model application environments while running in the simulated environment; assign a score to each of the performance metrics collected for the current application environment and each of the model application environments, wherein a higher score is assigned to a higher level of performance related to the performance metric; determine a model application environment that yielded a higher score for a performance metric compared to the score of the performance metric in the current application environment; determine at least one technology product used for a corresponding technology component associated with the performance metric in the determined model application environment that is different from the current technology product used for the technology component in the current application environment; and determine a recommendation to use the determined at least one technology product for the technology component to achieve a higher level of performance related to the performance metric; and a memory coupled to the at least one processor and configured to store information relating to the plurality of alternative technology products available for each of the technology components.
 2. The system of claim 1, wherein the at least one processor is further configured to: run the software application in the current application environment and each of the model application environments at a plurality of loads, wherein each load includes a pre-selected number of logins and a pre-selected amount of test data; and collect the plurality of performance metrics for each of the loads.
 3. The system of claim 1, wherein the plurality of performance metrics comprises metrics relating to one or more of application server performance, type of data handled by the software application, database performance, security analysis, input and output analysis, deployment on cloud platforms.
 4. The system of claim 1, wherein the at least one processor is further configured to: receive a request for the higher level of performance related to the performance metric associated with the technology component as compared to a current level of performance related to the performance metric associated with the technology component in the current application environment; and determine the recommendation to use the determined at least one technology product for the technology component in response to receiving the request.
 5. The system of claim 1, wherein the at least one processor is configured to: compare total scores assigned to the performance metrics collected for the current application environment and each of the model application environments; detect that at least one model application environment has a higher total score of the performance metrics as compared to a total score of the performance metrics collected for the current application environment; and determine a recommendation to use the at least one model application environment based on the detecting.
 6. The system of claim 1, wherein the information relating to the current application environment comprises information relating to the one or more technology components of the current application environment and the current technology product used for each of the one or more technology components.
 7. The system of claim 1, wherein the technology components comprise one or more of a middleware product, an operating system, an implementation technology, a cloud provider, a network technology, a virtualization technique and a server less computing technology.
 8. A method for improving an application environment of a software application, comprising: obtaining information relating to a current application environment being used to run a software application, wherein the current application environment comprises one or more technology components including one or more hardware technology components, one or more software technology components or a combination thereof, wherein each of the technology components uses a technology product from a plurality of alternative technology products available for the technology component; obtaining information relating to a plurality of model application environments for the software application, wherein each of the model application environments comprises a different combination of the technology products used for the technology components; running the software application using the current application environment and each of the model application environments in a simulated environment; collecting a plurality of performance metrics related to performance of the software application in the current application environment and each of the model application environments while running in the simulated environment; assigning a score to each of the performance metrics collected for the current application environment and each of the model application environments, wherein a higher score is assigned to a higher level of performance related to the performance metric; determining a model application environment that yielded a higher score for a performance metric compared to the score of the performance metric in the current application environment; determining at least one technology product used for a corresponding technology component associated with the performance metric in the determined model application environment that is different from the current technology product used for the technology component in the current application environment; and determining a recommendation to use the determined at least one technology product for the technology component to achieve a higher level of performance related to the performance metric.
 9. The method of claim 8, further comprising: run the software application in the current application environment and each of the model application environments at a plurality of loads, wherein each load includes a pre-selected number of logins and a pre-selected amount of test data; and collect the plurality of performance metrics for each of the loads.
 10. The method of claim 8, wherein the plurality of performance metrics comprises metrics relating to one or more of application server performance, type of data handled by the software application, database performance, security analysis, input and output analysis, deployment on cloud platforms.
 11. The method of claim 8, further comprising: receiving a request for the higher level of performance related to the performance metric associated with the technology component as compared to a current level of performance related to the performance metric associated with the technology component in the current application environment; and determining the recommendation to use the determined at least one technology product for the technology component in response to receiving the request.
 12. The method of claim 8, further comprising: comparing total scores assigned to the performance metrics collected for the current application environment and each of the model application environments; detecting that at least one model application environment has a higher total score of the performance metrics as compared to a total score of the performance metrics collected for the current application environment; and determining a recommendation to use the at least one model application environment based on the detecting.
 13. The method of claim 8, wherein the information relating to the current application environment comprises information relating to the one or more technology components of the current application environment and the current technology product used for each of the one or more technology components.
 14. The method of claim 8, wherein the technology components comprise one or more of a middleware product, an operating system, an implementation technology, a cloud provider, a network technology, a virtualization technique and a server less computing technology.
 15. A computer-readable medium for improving an application environment of a software application, the computer-readable medium storing instructions which when executed by at least one processor performs a method comprising: obtaining information relating to a current application environment being used to run a software application, wherein the current application environment comprises one or more technology components including one or more hardware technology components, one or more software technology components or a combination thereof, wherein each of the technology components uses a technology product from a plurality of alternative technology products available for the technology component; obtaining information relating to a plurality of model application environments for the software application, wherein each of the model application environments comprises a different combination of the technology products used for the technology components; running the software application using the current application environment and each of the model application environments in a simulated environment; collecting a plurality of performance metrics related to performance of the software application in the current application environment and each of the model application environments while running in the simulated environment; assigning a score to each of the performance metrics collected for the current application environment and each of the model application environments, wherein a higher score is assigned to a higher level of performance related to the performance metric; determining a model application environment that yielded a higher score for a performance metric compared to the score of the performance metric in the current application environment; determining at least one technology product used for a corresponding technology component associated with the performance metric in the determined model application environment that is different from the current technology product used for the technology component in the current application environment; and determining a recommendation to use the determined at least one technology product for the technology component to achieve a higher level of performance related to the performance metric.
 16. The computer-readable medium of claim 15, further comprising: run the software application in the current application environment and each of the model application environments at a plurality of loads, wherein each load includes a pre-selected number of logins and a pre-selected amount of test data; and collect the plurality of performance metrics for each of the loads.
 17. The computer-readable medium of claim 15, wherein the plurality of performance metrics comprises metrics relating to one or more of application server performance, type of data handled by the software application, database performance, security analysis, input and output analysis, deployment on cloud platforms.
 18. The computer-readable medium of claim 15, further comprising: receiving a request for the higher level of performance related to the performance metric associated with the technology component as compared to a current level of performance related to the performance metric associated with the technology component in the current application environment; and determining the recommendation to use the determined at least one technology product for the technology component in response to receiving the request.
 19. The computer-readable medium of claim 15, further comprising: comparing total scores assigned to the performance metrics collected for the current application environment and each of the model application environments; detecting that at least one model application environment has a higher total score of the performance metrics as compared to a total score of the performance metrics collected for the current application environment; and determining a recommendation to use the at least one model application environment based on the detecting.
 20. The computer-readable medium of claim 15, wherein the information relating to the current application environment comprises information relating to the one or more technology components of the current application environment and the current technology product used for each of the one or more technology components. 